package cn.tedu.bonfire.passport.service;

import cn.tedu.bonfire.common.pojo.authentication.CurrentPrincipal;
import cn.tedu.bonfire.passport.pojo.param.AdminUserLoginParam;
import cn.tedu.bonfire.passport.pojo.param.UserLoginInfoParam;
import cn.tedu.bonfire.passport.pojo.param.UserPhoneLoginParam;
import cn.tedu.bonfire.passport.pojo.vo.UserLoginResultVO;

public interface IUserService {

    /**
     * 用户密码登录
     *
     * @param userLoginInfoParam 封装了登录信息的对象
     * @param remoteAddr         客户端的IP地址
     * @param userAgent          客户端的浏览器信息
     * @return 成功登录的用户的信息，包括：ID、用户名、头像、JWT等数据
     */
    UserLoginResultVO login(UserLoginInfoParam userLoginInfoParam,String remoteAddr, String userAgent);
    UserLoginResultVO adminLogin(AdminUserLoginParam userLoginInfoParam, String remoteAddr, String userAgent);

    /**
     * 用户手机号登录
     *
     * @param userPhoneLoginParam 封装了登录信息的对象
     * @param remoteAddr         客户端的IP地址
     * @param userAgent          客户端的浏览器信息
     * @return 成功登录的用户的信息，包括：ID、用户名、头像、JWT等数据
     */
    UserLoginResultVO loginByPhone(UserPhoneLoginParam userPhoneLoginParam, String remoteAddr, String userAgent);

    /**
     * 获取手机验证码
     *
     * @param phone          手机号码
     */
    void getCaptchaByPhone(String phone);

    /**
     * 获取图形验证码
     *
     */
    String getCodeCaptcha();


    void logout(CurrentPrincipal currentPrincipal);

    String getAuthorities(CurrentPrincipal currentPrincipal);
}
